/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.tpj.logic;

import cz.tpj.util.ErrorClass;

/**
 * Třída podle návrhového vzoru <i>přepravka</i>. Uchovává údaje pro jednu
 * konkrétní URL adresu, jméno odkazu a metodu (jedná-li se o formulář).
 * @author Martin
 */
public class MenuItem {
    private String name;
    private String address;
    private String method = null;

    //----------------------------Konstruktor-----------------------------------
    /**
     * Jméno odkazu udává popisek, který bude vidět v prohlížeči (př. klikni sem) a dresa
     * to kam se odkaz/formulář po kliknutí přesměrovavá.
     * @param name jméno odkazu
     * @param address adresa kam odkaz ukazuje
     */
    public MenuItem(String name, String address){
        this.address = address;
        this.name = name;
    }

    //------------------------------SET-----------------------------------------
    /**
     * Popisek který bude vidět v prohlížeči.
     * @param name String
     */
    public void setName(String name){
        this.name = name;
    }

    /**
     * Kam odkaz směřuje.
     * @param address String
     */
    public void setAddress(String address){
        this.address = address;
    }

    /**
     * Pokud je použit formulář, pak udává jakou metodou bude formulář zaslán.
     * @param method možné hodnoty: "GET", "POST", "null".
     */

    /**
     * Pokud je použit formulář, pak udává jakou metodou bude formulář zaslán. Pokud se
     * použije jiná metoda než GET, POST, nebo null (v přípdě že se nejedná o použití ve formuláři),
     * pak bude vzhozena vyjímka.
     * @param method možné hodnoty: "GET", "POST", "null".
     * @throws cz.tpj.util.ErrorClass použitý kod: {@link cz.tpj.util.ErrorClass#INVALID_DATA_FORMAT}
     */
    public void setMethod(String method) throws ErrorClass{
        if(method.equalsIgnoreCase("GET")){
            this.method = method;
        }else if(method.equalsIgnoreCase("POST")){
            this.method = method;
        }else if(method == null){
            this.method = null;
        }else{
            throw new ErrorClass(ErrorClass.INVALID_DATA_FORMAT, "Neznama hodnota argumentu setMethod()"+this.toString());
        }
    }

    //------------------------------GET-----------------------------------------
    /**
     * Hodnota popisku který bude vidět v prohlížeči.
     * @return String
     */
    public String getName(){
        return name;
    }

    /**
     * Kam odkaz směřuje.
     * @return String
     */
    public String getAddress(){
        return address;
    }

    /**
     * Pokud je použit formulář, pak udává jakou metodou bude formulář zaslán.
     * @return String možné hodnoty: "GET", "POST", "null".
     */
    public String getMethod(){
        return method;
    }
}
